docs: sync from help-docs (source of truth) - #1083
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe documentation site now has page metadata across major sections, revised branding and links, expanded getting-started content, updated MkDocs navigation, and new responsive styling. ChangesDocumentation refresh
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Suggested labels: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
This PR doesn't fully meet our contributing guidelines and PR template. What needs to be fixed:
Please edit this PR description to address the above within 2 hours, or it will be automatically closed. If you believe this was flagged incorrectly, please let a maintainer know. |
d1dec56 to
c824ebc
Compare
c824ebc to
b18bbf3
Compare
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/docs/data-engineering/tools/dbt-tools.md`:
- Around line 91-92: Update the generated Description value in the documented
dbt output to remain on a single line, keeping the closing quote on the same
line; only represent a newline with an explicit escape if that is the tool’s
actual output.
In `@docs/docs/index.md`:
- Line 28: Change the six documentation card headings, including “Quickstart”
and the headings at the referenced locations, from level-three (`###`) to
level-two (`##`) headings while preserving their existing text and links.
In `@docs/mkdocs.yml`:
- Around line 69-191: Update the Altimate MCP navigation section in the mkdocs
nav configuration so every datamates/... target points to an existing
documentation file under docs/docs/datamates, adding the missing target files as
needed, or remove entries whose pages do not exist. Ensure no broken datamates
navigation links remain.
- Line 4: Update docs/docs/llms.txt entries to remove the outdated /code/ prefix
so every link matches the root-relative routing established by site_url in
docs/mkdocs.yml and docs/docs/index.md. Modify docs/docs/llms.txt lines 4-42;
docs/mkdocs.yml lines 4-4 and docs/docs/index.md lines 16-16 require no direct
changes and serve as routing references.
- Around line 66-68: Restore valid callable Material emoji settings under
pymdownx.emoji by replacing the null emoji_index and emoji_generator values with
the original Material extensions or equivalent !!python/name callables. Ensure
Material emoji shortcodes render successfully during MkDocs builds.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 18bb33a8-8d51-4469-8ec8-9ccd300edd56
📒 Files selected for processing (75)
docs/docs/configure/acp.mddocs/docs/configure/agents.mddocs/docs/configure/bedrock-custom-endpoints.mddocs/docs/configure/commands.mddocs/docs/configure/config.mddocs/docs/configure/context-management.mddocs/docs/configure/custom-tools.mddocs/docs/configure/formatters.mddocs/docs/configure/governance.mddocs/docs/configure/index.mddocs/docs/configure/keybinds.mddocs/docs/configure/lsp.mddocs/docs/configure/mcp-servers.mddocs/docs/configure/models.mddocs/docs/configure/permissions.mddocs/docs/configure/providers.mddocs/docs/configure/rules.mddocs/docs/configure/skills.mddocs/docs/configure/themes.mddocs/docs/configure/tools.mddocs/docs/configure/tools/config.mddocs/docs/configure/tools/core-tools.mddocs/docs/configure/tools/custom.mddocs/docs/configure/tools/index.mddocs/docs/configure/trace.mddocs/docs/configure/warehouses.mddocs/docs/data-engineering/agent-modes.mddocs/docs/data-engineering/guides/clickhouse.mddocs/docs/data-engineering/guides/cost-optimization.mddocs/docs/data-engineering/guides/data-parity.mddocs/docs/data-engineering/guides/index.mddocs/docs/data-engineering/guides/migration.mddocs/docs/data-engineering/guides/using-with-claude-code.mddocs/docs/data-engineering/guides/using-with-codex.mddocs/docs/data-engineering/tools/dbt-tools.mddocs/docs/data-engineering/tools/finops-tools.mddocs/docs/data-engineering/tools/index.mddocs/docs/data-engineering/tools/lineage-tools.mddocs/docs/data-engineering/tools/memory-tools.mddocs/docs/data-engineering/tools/schema-tools.mddocs/docs/data-engineering/tools/sql-tools.mddocs/docs/data-engineering/tools/warehouse-tools.mddocs/docs/data-engineering/training/index.mddocs/docs/data-engineering/training/team-deployment.mddocs/docs/data-engineering/validators.mddocs/docs/develop/ecosystem.mddocs/docs/develop/plugins.mddocs/docs/develop/sdk.mddocs/docs/develop/server.mddocs/docs/drivers.mddocs/docs/examples/index.mddocs/docs/getting-started.mddocs/docs/getting-started/index.mddocs/docs/getting-started/quickstart-new.mddocs/docs/getting-started/quickstart.mddocs/docs/index.mddocs/docs/llms.txtdocs/docs/quickstart.mddocs/docs/reference/changelog.mddocs/docs/reference/network.mddocs/docs/reference/security-faq.mddocs/docs/reference/telemetry.mddocs/docs/reference/troubleshooting.mddocs/docs/reference/windows-wsl.mddocs/docs/usage/check.mddocs/docs/usage/ci-headless.mddocs/docs/usage/cli.mddocs/docs/usage/dbt-pr-review-corpus.mddocs/docs/usage/dbt-pr-review.mddocs/docs/usage/github.mddocs/docs/usage/gitlab.mddocs/docs/usage/ide.mddocs/docs/usage/tui.mddocs/docs/usage/web.mddocs/mkdocs.yml
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg> | ||
| </div> | ||
|
|
||
| ### [Quickstart](/getting-started/) |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use level-two headings for the documentation cards.
Each card heading follows the page level-one heading. Level-three headings skip level two and create an invalid heading outline. Change all six card headings from ### to ##.
Proposed fix
-### [Quickstart](/getting-started/)
+## [Quickstart](/getting-started/)
-### [Tools](/configure/tools/)
+## [Tools](/configure/tools/)
-### [Interfaces](/usage/tui/)
+## [Interfaces](/usage/tui/)
-### [Configure](/configure/)
+## [Configure](/configure/)
-### [Governance](/configure/governance/)
+## [Governance](/configure/governance/)
-### [Develop & Extend](/develop/sdk/)
+## [Develop & Extend](/develop/sdk/)Also applies to: 41-41, 54-54, 67-67, 80-80, 93-93
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)
[warning] 28-28: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/index.md` at line 28, Change the six documentation card headings,
including “Quickstart” and the headings at the referenced locations, from
level-three (`###`) to level-two (`##`) headings while preserving their existing
text and links.
Source: Linters/SAST tools
| site_description: The open-source data engineering harness. 100+ tools for building, validating, optimizing, and shipping data products. | ||
| site_description: The open-source data engineering harness. 100+ tools for building, | ||
| validating, optimizing, and shipping data products. | ||
| site_url: https://docs.altimate.sh |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
origin="${DOCS_ORIGIN:-https://docs.altimate.sh}"
for path in /quickstart/ /code/quickstart/; do
printf '%s%s -> ' "$origin" "$path"
curl -sS -o /dev/null -w '%{http_code}\n' -L "$origin$path"
doneRepository: AltimateAI/altimate-code
Length of output: 255
Remove the outdated /code/ route set.
docs/mkdocs.yml#L4-L4 and docs/docs/index.md#L16-L16 use root-relative docs.altimate.sh paths. docs/docs/llms.txt still points every link under /code/, which does not resolve at the deployed docs origin. Update docs/docs/llms.txt to remove the /code/ prefix or regenerate it from the canonical routing policy.
📍 Affects 3 files
docs/mkdocs.yml#L4-L4(this comment)docs/docs/index.md#L16-L16docs/docs/llms.txt#L4-L42
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/mkdocs.yml` at line 4, Update docs/docs/llms.txt entries to remove the
outdated /code/ prefix so every link matches the root-relative routing
established by site_url in docs/mkdocs.yml and docs/docs/index.md. Modify
docs/docs/llms.txt lines 4-42; docs/mkdocs.yml lines 4-4 and docs/docs/index.md
lines 16-16 require no direct changes and serve as routing references.
| - pymdownx.emoji: | ||
| emoji_index: null | ||
| emoji_generator: null |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Configured Markdown extension:"
sed -n '57,68p' docs/mkdocs.yml
echo "Potential emoji shortcodes:"
rg -n ':[A-Za-z0-9_+-]+:' docs/docs || true
echo "Installed MkDocs and PyMdown dependency declarations:"
fd -HI '^(requirements.*\.(txt|in)|pyproject\.toml|poetry\.lock|uv\.lock)$' . \
-x rg -n 'mkdocs|pymdown|material' {}Repository: AltimateAI/altimate-code
Length of output: 4332
🌐 Web query:
pymdownx.emoji emoji_index null emoji_generator null MkDocs extension documentation
💡 Result:
In the context of the PyMdown Extensions Emoji extension used with MkDocs, emoji_index and emoji_generator are configuration parameters that define how emojis are retrieved and rendered [1][2]. Because MkDocs uses YAML for configuration, these parameters cannot be set with simple string names; they must be provided as Python object references using the!!python/name: prefix [1][3]. Parameter Overview: 1. emoji_index: This parameter specifies the function that provides the mapping (index) between shortcodes (e.g.,:smile:) and emoji data [1][2]. The extension comes with default indexes like emojione, gemoji, and twemoji [1][4]. 2. emoji_generator: This parameter specifies the function that converts the emoji data into the final output format (e.g., an HTML image tag or Unicode character) [1][2]. Configuration in MkDocs: To configure these in your mkdocs.yml file, you use the!!python/name: prefix to point to the specific Python function [1][5]. For example, when using the Material for MkDocs theme, the configuration is typically set as follows [6][5]: markdown_extensions: - pymdownx.emoji: emoji_index:!!python/name:material.extensions.emoji.twemoji emoji_generator:!!python/name:material.extensions.emoji.to_svg In this example,!!python/name: tells the YAML parser to import the specified Python function rather than treating it as a literal string [1][7]. You can substitute these references with custom modules or other built-in options provided by the PyMdown Extensions package (e.g.,!!python/name:pymdownx.emoji.to_png) depending on your requirements [1][3].
Citations:
- 1: https://facelessuser.github.io/pymdown-extensions/extensions/emoji/
- 2: https://github.com/wohugb/pymdown-extensions/blob/master/docs/src/markdown/extensions/emoji.md
- 3: https://facelessuser.github.io/pymdown-extensions/faq/
- 4: https://wohugb.github.io/pymdown-extensions/extensions/emoji/
- 5: https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/
- 6: https://github.com/squidfunk/mkdocs-material/blob/4c0004e1/docs/reference/icons-emojis.md
- 7: Adding custom icons in custom theme extending Material for MkDocs squidfunk/mkdocs-material#7371
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
try:
import pymdownx.emoji
import inspect
settings = getattr(pymdownx.emoji, 'DEFAULT_SETTINGS', None)
print('pymdownx.emoji available')
print('DEFAULT_SETTINGS:', settings)
for name in ('emoji_index', 'emoji_generator'):
if settings:
print(name, 'default type:', type(settings.get(name)).__name__, 'default:', repr(settings.get(name)))
except Exception as e:
print('pymdownx.emoji unavailable:', repr(e))
try:
import pymdownx.emoji
ext = pymdownx.emoji.EmojiExtension()
config = {'emoji_index': None, 'emoji_generator': None}
ret = ext.on_config(config) or config
print('on_config returns', type(ret).__name__ if ret is not None else None)
print('emoji_index after config:', type(ret.get('emoji_index')).__name__ if 'emoji_index' in ret else 'absent', repr(ret.get('emoji_index')))
print('emoji_generator after config:', type(ret.get('emoji_generator')).__name__ if 'emoji_generator' in ret else 'absent', repr(ret.get('emoji_generator')))
except Exception as e:
print('configuration test failed:', repr(type(e).__name__ + ': ' + str(e)))
PYRepository: AltimateAI/altimate-code
Length of output: 317
🌐 Web query:
MkDocs Material icons emojis emoji_index null emoji_generator null
💡 Result:
In Material for MkDocs, the configuration settings for emoji_index and emoji_generator within the pymdownx.emoji extension must be set to specific Python functions rather than null. Setting these to null is generally an error caused by misconfiguration or issues with third-party hosting platforms like Read the Docs parsing the YAML file incorrectly [1]. To correctly enable icons and emojis in your mkdocs.yml, you should use the following configuration [2][3][4]: markdown_extensions: - pymdownx.emoji: emoji_index:!!python/name:material.extensions.emoji.twemoji emoji_generator:!!python/name:material.extensions.emoji.to_svg Historical note: If you are using a very old version of Material for MkDocs (prior to version 9.4.0), you may see references to the older materialx.emoji package [5][6]. However, in all modern versions, the logic has been moved into the core theme, and material.extensions.emoji is the required path [5][6][7]. If these values are appearing as null in your build process, verify that your YAML file is not being modified or stripped by your CI/CD environment or hosting provider during the build process [1].
Citations:
- 1: MkDocs builds perfectly locally, but gets stuck on Read the Docs readthedocs/readthedocs.org#7865
- 2: https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/
- 3: https://squidfunk.github.io/mkdocs-material/setup/extensions/
- 4: emoji not being printed/rendered squidfunk/mkdocs-material#7270
- 5: Icons broken on
mastersquidfunk/mkdocs-material#6054 - 6: https://github.com/facelessuser/mkdocs-material-extensions/blob/master/materialx/emoji.py
- 7: https://github.com/squidfunk/mkdocs-material/blob/ae05a534/material/extensions/emoji.py
🌐 Web query:
"def test_emoji_null" "mkdocs-material" "emoji_index" "emoji_generator" "None"
💡 Result:
There is no standard or built-in function named test_emoji_null within the Material for MkDocs codebase [1][2]. The configuration of emojis and icons in Material for MkDocs relies on the pymdownx.emoji extension, which requires two primary components specified in your mkdocs.yml file [3][4]: 1. emoji_index: A callable that returns the dictionary of available emojis/icons (e.g.,!!python/name:material.extensions.emoji.twemoji) [1][3]. 2. emoji_generator: A callable that converts an icon shortcode into an SVG element (e.g.,!!python/name:material.extensions.emoji.to_svg) [1][3]. If you are encountering references to test_emoji_null, it is likely a user-defined function or a placeholder from custom internal testing code, rather than a part of the official Material for MkDocs library or its associated extensions [1][5][2]. For production configurations, you should use the official paths provided in the documentation [3][4]. If you are developing custom emoji logic, ensure your Python code properly imports and utilizes the existing material.extensions.emoji module [1][2].
Citations:
- 1: https://github.com/squidfunk/mkdocs-material/blob/ae05a534/material/extensions/emoji.py
- 2: Adding custom icons in custom theme extending Material for MkDocs squidfunk/mkdocs-material#7371
- 3: https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/
- 4: emoji not being printed/rendered squidfunk/mkdocs-material#7270
- 5: Custom emoji generator causes unnecessary deprecation warning squidfunk/mkdocs-material#7276
Restore the Material emoji generators before release.
emoji_index and emoji_generator are required callable settings for pymdownx.emoji when emoji shortcodes such as :material-cog:{ .lg .middle } are rendered. Setting them to null leaves no valid index or generator for those icons and can break MkDocs builds on pages that use Material emojis. Keep the original Material extensions or replace them with valid !!python/name:... callables.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/mkdocs.yml` around lines 66 - 68, Restore valid callable Material emoji
settings under pymdownx.emoji by replacing the null emoji_index and
emoji_generator values with the original Material extensions or equivalent
!!python/name callables. Ensure Material emoji shortcodes render successfully
during MkDocs builds.
| - attr_list | ||
| - md_in_html | ||
| - pymdownx.emoji: | ||
| emoji_index: null |
There was a problem hiding this comment.
WARNING: pymdownx.emoji index/generator dropped to null — breaks the Material icon shortcodes still used in the docs.
The sync replaced the required !!python/name:material.extensions.emoji.twemoji / to_svg tags with null. Those !!python/name: tags cannot survive a plain YAML parse/reserialize (a likely sync_to_oss.py artifact), but Material for MkDocs needs them to render the :octicons-*: / :material-*: shortcodes that are still present in the synced content (e.g. [:octicons-arrow-right-24: Browse more examples] in docs/docs/getting-started/index.md). With null, those shortcodes either render as literal text (silently — CI's mkdocs build may not catch it) or fail the build outright, depending on the pinned pymdownx version. Restore the tags:
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svgReply with @kilocode-bot fix it to have Kilo Code address this issue.
Code Review SummaryStatus: 3 Issues Found | Recommendation: Address before merge Overview
Incremental review of commit Issue Details (click to expand)WARNING
Files Reviewed (9 changed)
Fix these issues in Kilo Cloud Previous Review Summaries (4 snapshots, latest commit 2bf1dff)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 2bf1dff)Status: No Issues Found | Recommendation: Merge The branch was force-pushed and squashed into commit Verified (functional content)
No new findings. The build-breaking issues raised earlier (emoji Files Reviewed (75 files)
Previous review (commit dc62de1)Status: No Issues Found | Recommendation: Merge Incremental review (since Incremental changes (clean)
No new findings. The remainder is the front-matter standardization already covered previously. Files Reviewed (75 files)Incremental functional content: Front-matter / content mirror (remainder): the other 69 pages under Previous review (commit 1b8a056)Status: No Issues Found | Recommendation: Merge Incremental review (since
No new findings. The previously-raised Files Reviewed (33 files)Front-matter cleanup (29):
Functional content (4):
Previous review (commit 96579c7)Status: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
Files Reviewed (70 files)
Reviewed by glm-5.2 · Input: 55.8K · Output: 22.1K · Cached: 953.2K Review guidance: REVIEW.md from base branch |
There was a problem hiding this comment.
2 issues found across 75 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="docs/docs/llms.txt">
<violation number="1" location="docs/docs/llms.txt:10">
P2: The de-prefixing pass stripped the `https://help.altimate.ai` domain from these links but left the `/code/` path segment in place, e.g. `/code/quickstart/`. Since the deployed site's routes (per mkdocs.yml nav) don't have a `/code/` prefix, these llms.txt links won't resolve at the deployed docs origin.</violation>
</file>
<file name="docs/docs/index.md">
<violation number="1" location="docs/docs/index.md:28">
P3: These new card headings jump from the page's h1 straight to h3, skipping h2, which creates an invalid heading outline (flagged by markdownlint MD001). Change `### [Quickstart](/getting-started/)` and the other five card headings to `##`.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| - [Quickstart (5 min)](https://help.altimate.ai/code/quickstart/): Install altimate, configure your LLM provider, connect your warehouse, and run your first query in under 5 minutes. | ||
| - [Full Setup Guide](https://help.altimate.ai/code/getting-started/): Complete installation, warehouse configuration for all 8 supported warehouses, LLM provider setup, and first-run walkthrough. | ||
| - [Network & Proxy](https://help.altimate.ai/code/reference/network/): Proxy configuration, CA certificate setup, firewall requirements. | ||
| - [Quickstart (5 min)](/code/quickstart/): Install altimate, configure your LLM provider, connect your warehouse, and run your first query in under 5 minutes. |
There was a problem hiding this comment.
P2: The de-prefixing pass stripped the https://help.altimate.ai domain from these links but left the /code/ path segment in place, e.g. /code/quickstart/. Since the deployed site's routes (per mkdocs.yml nav) don't have a /code/ prefix, these llms.txt links won't resolve at the deployed docs origin.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/docs/llms.txt, line 10:
<comment>The de-prefixing pass stripped the `https://help.altimate.ai` domain from these links but left the `/code/` path segment in place, e.g. `/code/quickstart/`. Since the deployed site's routes (per mkdocs.yml nav) don't have a `/code/` prefix, these llms.txt links won't resolve at the deployed docs origin.</comment>
<file context>
@@ -1,42 +1,42 @@
-- [Quickstart (5 min)](https://help.altimate.ai/code/quickstart/): Install altimate, configure your LLM provider, connect your warehouse, and run your first query in under 5 minutes.
-- [Full Setup Guide](https://help.altimate.ai/code/getting-started/): Complete installation, warehouse configuration for all 8 supported warehouses, LLM provider setup, and first-run walkthrough.
-- [Network & Proxy](https://help.altimate.ai/code/reference/network/): Proxy configuration, CA certificate setup, firewall requirements.
+- [Quickstart (5 min)](/code/quickstart/): Install altimate, configure your LLM provider, connect your warehouse, and run your first query in under 5 minutes.
+- [Full Setup Guide](/code/getting-started/): Complete installation, warehouse configuration for all 8 supported warehouses, LLM provider setup, and first-run walkthrough.
+- [Network & Proxy](/code/reference/network/): Proxy configuration, CA certificate setup, firewall requirements.
</file context>
| - [Quickstart (5 min)](/code/quickstart/): Install altimate, configure your LLM provider, connect your warehouse, and run your first query in under 5 minutes. | |
| - [Quickstart (5 min)](/quickstart/): Install altimate, configure your LLM provider, connect your warehouse, and run your first query in under 5 minutes. |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg> | ||
| </div> | ||
|
|
||
| ### [Quickstart](/getting-started/) |
There was a problem hiding this comment.
P3: These new card headings jump from the page's h1 straight to h3, skipping h2, which creates an invalid heading outline (flagged by markdownlint MD001). Change ### [Quickstart](/getting-started/) and the other five card headings to ##.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At docs/docs/index.md, line 28:
<comment>These new card headings jump from the page's h1 straight to h3, skipping h2, which creates an invalid heading outline (flagged by markdownlint MD001). Change `### [Quickstart](/getting-started/)` and the other five card headings to `##`.</comment>
<file context>
@@ -1,10 +1,107 @@
+<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg>
+</div>
+
+### [Quickstart](/getting-started/)
+
+Install, connect a warehouse and an LLM, and make your first run in under five minutes.
</file context>
96579c7 to
1b8a056
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/docs/getting-started/index.md`:
- Line 54: Change all documentation card headings from level-three to level-two
headings: update the six card headings at docs/docs/getting-started/index.md
lines 54, 67, 80, 93, 106, and 119, and the six card headings at
docs/docs/index.md lines 28, 41, 54, 67, 80, and 93.
In `@docs/docs/usage/ide.md`:
- Around line 1-3: Update the references around the IDE installation and usage
instructions to use one consistent extension name, preferably Datamates,
matching the title and the extension identifier
altimateai.vscode-altimate-mcp-server. Replace the `Altimate MCP` wording on the
affected lines without changing the CLI command or other setup details.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: d15578e1-b386-4f62-a71f-e508acbbfb5d
📒 Files selected for processing (75)
docs/docs/configure/acp.mddocs/docs/configure/agents.mddocs/docs/configure/bedrock-custom-endpoints.mddocs/docs/configure/commands.mddocs/docs/configure/config.mddocs/docs/configure/context-management.mddocs/docs/configure/custom-tools.mddocs/docs/configure/formatters.mddocs/docs/configure/governance.mddocs/docs/configure/index.mddocs/docs/configure/keybinds.mddocs/docs/configure/lsp.mddocs/docs/configure/mcp-servers.mddocs/docs/configure/models.mddocs/docs/configure/permissions.mddocs/docs/configure/providers.mddocs/docs/configure/rules.mddocs/docs/configure/skills.mddocs/docs/configure/themes.mddocs/docs/configure/tools.mddocs/docs/configure/tools/config.mddocs/docs/configure/tools/core-tools.mddocs/docs/configure/tools/custom.mddocs/docs/configure/tools/index.mddocs/docs/configure/trace.mddocs/docs/configure/warehouses.mddocs/docs/data-engineering/agent-modes.mddocs/docs/data-engineering/guides/clickhouse.mddocs/docs/data-engineering/guides/cost-optimization.mddocs/docs/data-engineering/guides/data-parity.mddocs/docs/data-engineering/guides/index.mddocs/docs/data-engineering/guides/migration.mddocs/docs/data-engineering/guides/using-with-claude-code.mddocs/docs/data-engineering/guides/using-with-codex.mddocs/docs/data-engineering/tools/dbt-tools.mddocs/docs/data-engineering/tools/finops-tools.mddocs/docs/data-engineering/tools/index.mddocs/docs/data-engineering/tools/lineage-tools.mddocs/docs/data-engineering/tools/memory-tools.mddocs/docs/data-engineering/tools/schema-tools.mddocs/docs/data-engineering/tools/sql-tools.mddocs/docs/data-engineering/tools/warehouse-tools.mddocs/docs/data-engineering/training/index.mddocs/docs/data-engineering/training/team-deployment.mddocs/docs/data-engineering/validators.mddocs/docs/develop/ecosystem.mddocs/docs/develop/plugins.mddocs/docs/develop/sdk.mddocs/docs/develop/server.mddocs/docs/drivers.mddocs/docs/examples/index.mddocs/docs/getting-started.mddocs/docs/getting-started/index.mddocs/docs/getting-started/quickstart-new.mddocs/docs/getting-started/quickstart.mddocs/docs/index.mddocs/docs/llms.txtdocs/docs/quickstart.mddocs/docs/reference/changelog.mddocs/docs/reference/network.mddocs/docs/reference/security-faq.mddocs/docs/reference/telemetry.mddocs/docs/reference/troubleshooting.mddocs/docs/reference/windows-wsl.mddocs/docs/usage/check.mddocs/docs/usage/ci-headless.mddocs/docs/usage/cli.mddocs/docs/usage/dbt-pr-review-corpus.mddocs/docs/usage/dbt-pr-review.mddocs/docs/usage/github.mddocs/docs/usage/gitlab.mddocs/docs/usage/ide.mddocs/docs/usage/tui.mddocs/docs/usage/web.mddocs/mkdocs.yml
🚧 Files skipped from review as they are similar to previous changes (69)
- docs/docs/configure/tools/core-tools.md
- docs/docs/develop/server.md
- docs/docs/configure/themes.md
- docs/docs/data-engineering/tools/sql-tools.md
- docs/docs/develop/sdk.md
- docs/docs/examples/index.md
- docs/docs/data-engineering/guides/data-parity.md
- docs/docs/configure/agents.md
- docs/docs/configure/acp.md
- docs/docs/configure/commands.md
- docs/docs/configure/keybinds.md
- docs/docs/configure/warehouses.md
- docs/docs/drivers.md
- docs/docs/configure/formatters.md
- docs/docs/usage/ci-headless.md
- docs/docs/develop/ecosystem.md
- docs/docs/configure/tools/index.md
- docs/docs/data-engineering/training/team-deployment.md
- docs/docs/data-engineering/guides/using-with-codex.md
- docs/docs/quickstart.md
- docs/docs/configure/models.md
- docs/docs/configure/custom-tools.md
- docs/docs/configure/tools/custom.md
- docs/docs/data-engineering/guides/index.md
- docs/docs/data-engineering/validators.md
- docs/docs/configure/bedrock-custom-endpoints.md
- docs/docs/data-engineering/tools/warehouse-tools.md
- docs/docs/usage/cli.md
- docs/docs/usage/gitlab.md
- docs/docs/configure/tools/config.md
- docs/docs/configure/context-management.md
- docs/docs/data-engineering/agent-modes.md
- docs/docs/data-engineering/tools/memory-tools.md
- docs/docs/configure/index.md
- docs/docs/configure/lsp.md
- docs/docs/develop/plugins.md
- docs/docs/configure/permissions.md
- docs/docs/usage/check.md
- docs/docs/data-engineering/tools/index.md
- docs/docs/configure/providers.md
- docs/docs/usage/tui.md
- docs/docs/configure/tools.md
- docs/docs/data-engineering/guides/cost-optimization.md
- docs/docs/data-engineering/tools/dbt-tools.md
- docs/docs/data-engineering/tools/finops-tools.md
- docs/docs/data-engineering/guides/migration.md
- docs/docs/usage/dbt-pr-review-corpus.md
- docs/docs/reference/network.md
- docs/docs/configure/skills.md
- docs/docs/reference/changelog.md
- docs/docs/getting-started.md
- docs/docs/reference/troubleshooting.md
- docs/docs/data-engineering/tools/schema-tools.md
- docs/docs/data-engineering/training/index.md
- docs/docs/configure/mcp-servers.md
- docs/docs/configure/config.md
- docs/docs/usage/dbt-pr-review.md
- docs/docs/configure/governance.md
- docs/docs/reference/telemetry.md
- docs/docs/configure/rules.md
- docs/docs/usage/web.md
- docs/docs/reference/security-faq.md
- docs/docs/data-engineering/guides/clickhouse.md
- docs/docs/configure/trace.md
- docs/docs/data-engineering/guides/using-with-claude-code.md
- docs/docs/getting-started/quickstart.md
- docs/docs/reference/windows-wsl.md
- docs/docs/usage/github.md
- docs/docs/data-engineering/tools/lineage-tools.md
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M17.5 19a4.5 4.5 0 1 0-2.45-8.28A6.5 6.5 0 0 0 4 13.5a4.5 4.5 0 0 0 4.5 4.5h9z"/></svg> | ||
| </div> | ||
|
|
||
| ### [Bring Your Own LLM](/configure/providers/) |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use level-two headings for documentation card headings.
Both pages use ### for cards without a level-two parent. This creates an invalid heading outline. Change the affected card headings to ##.
docs/docs/getting-started/index.md#L54-L54: change the six card headings at Lines 54, 67, 80, 93, 106, and 119.docs/docs/index.md#L28-L28: change the six card headings at Lines 28, 41, 54, 67, 80, and 93.
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)
[warning] 54-54: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
📍 Affects 2 files
docs/docs/getting-started/index.md#L54-L54(this comment)docs/docs/index.md#L28-L28
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/getting-started/index.md` at line 54, Change all documentation card
headings from level-three to level-two headings: update the six card headings at
docs/docs/getting-started/index.md lines 54, 67, 80, 93, 106, and 119, and the
six card headings at docs/docs/index.md lines 28, 41, 54, 67, 80, and 93.
Source: Linters/SAST tools
| - pymdownx.emoji: | ||
| emoji_index: null | ||
| emoji_generator: null |
There was a problem hiding this comment.
CRITICAL — mkdocs build fails outright; the docs deploy is broken
The YAML round-trip replaced the !!python/name: tags with null, and pymdownx.emoji calls inspect.getfullargspec() on emoji_index. Building this branch aborts:
ERROR - Config value 'markdown_extensions': Failed to load extension 'pymdownx.emoji'.
File ".../pymdownx/emoji.py", line 257, in _set_index
if len(inspect.getfullargspec(index).args):
TypeError: unsupported callable
Aborted with a configuration error!
main builds clean (exit 0); this branch does not. .github/workflows/docs.yml runs exactly mkdocs build -f docs/mkdocs.yml -d site, so the Pages job fails and nothing publishes. GitHub Pages keeps serving the last successful build, so the site does not go dark — it silently freezes, and every future docs change fails to deploy with no user-visible signal.
The extension is genuinely in use: 17 :octicons-arrow-right-24: plus :material-github:, :material-palette:, :material-puzzle:.
Fix — restore the tags, and make the sync preserve unknown YAML tags (or patch only the nav: key instead of rewriting the whole file):
- pymdownx.emoji:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svgPatching just these two lines makes the build succeed, which is how the remaining issues below were confirmed.
| - Altimate MCP: | ||
| - Overview: datamates/index.md | ||
| - Introduction: datamates/user-guide/home.md | ||
| - Altimate Code Chat: datamates/user-guide/components/altimate-code.md | ||
| - Altimate LLM Gateway: datamates/user-guide/components/llm-gateway.md | ||
| - Setup: | ||
| - Overview: datamates/user-guide/setup/setup.md | ||
| - Cursor: datamates/user-guide/setup/cursor-setup.md | ||
| - Claude Code: datamates/user-guide/setup/claude-code-setup.md | ||
| - Cline: datamates/user-guide/setup/cline-setup.md | ||
| - VS Code: datamates/user-guide/setup/vscode-setup.md | ||
| - Components: | ||
| - Overview: datamates/user-guide/components/components_overview.md | ||
| - Integrations: | ||
| - Overview: datamates/user-guide/components/integrations/integrations.md | ||
| - Airflow: datamates/user-guide/components/integrations/airflow.md | ||
| - Altimate: datamates/user-guide/components/integrations/altimate.md | ||
| - BigQuery: datamates/user-guide/components/integrations/bigquery.md | ||
| - Dagster: datamates/user-guide/components/integrations/dagster.md | ||
| - Databricks: datamates/user-guide/components/integrations/databricks.md | ||
| - dbt: datamates/user-guide/components/integrations/dbt.md | ||
| - GitHub: datamates/user-guide/components/integrations/github.md | ||
| - Google Sheets: datamates/user-guide/components/integrations/google_sheets.md | ||
| - Jira: datamates/user-guide/components/integrations/jira.md | ||
| - Linear: datamates/user-guide/components/integrations/linear.md | ||
| - PostgreSQL: datamates/user-guide/components/integrations/postgresql.md | ||
| - Snowflake: datamates/user-guide/components/integrations/snowflake.md | ||
| - Knowledge Hub: datamates/user-guide/components/knowledgehub.md | ||
| - Memory Hub: datamates/user-guide/components/memory.md | ||
| - Guardrails: datamates/user-guide/components/guardrails.md | ||
| - Examples: | ||
| - Showcase: examples/index.md | ||
| - Use: | ||
| - Agents: | ||
| - Agent Modes: data-engineering/agent-modes.md | ||
| - Agent Config: configure/agents.md | ||
| - Tools: | ||
| - Overview: configure/tools/index.md | ||
| - Built-in Tools: configure/tools/config.md | ||
| - Core Tools: configure/tools/core-tools.md | ||
| - SQL Tools: data-engineering/tools/sql-tools.md | ||
| - Schema Tools: data-engineering/tools/schema-tools.md | ||
| - FinOps Tools: data-engineering/tools/finops-tools.md | ||
| - Lineage Tools: data-engineering/tools/lineage-tools.md | ||
| - dbt Tools: data-engineering/tools/dbt-tools.md | ||
| - Warehouse Tools: data-engineering/tools/warehouse-tools.md | ||
| - Memory Tools: data-engineering/tools/memory-tools.md | ||
| - Custom Tools: configure/tools/custom.md | ||
| - Skills: configure/skills.md | ||
| - Commands: configure/commands.md | ||
| - Validators: data-engineering/validators.md | ||
| - Trace: configure/trace.md | ||
| - Interfaces: | ||
| - TUI: usage/tui.md | ||
| - CLI: usage/cli.md | ||
| - SQL Check: usage/check.md | ||
| - Web UI: usage/web.md | ||
| - CI: usage/ci-headless.md | ||
| - IDE: usage/ide.md | ||
| - GitHub: usage/github.md | ||
| - GitLab: usage/gitlab.md | ||
| - dbt PR Review: usage/dbt-pr-review.md | ||
| - dbt PR Review — Issue Corpus: usage/dbt-pr-review-corpus.md | ||
| - Guides: | ||
| - Cost Optimization: data-engineering/guides/cost-optimization.md | ||
| - Migration: data-engineering/guides/migration.md | ||
| - Data Parity: data-engineering/guides/data-parity.md | ||
| - Using with Claude Code: data-engineering/guides/using-with-claude-code.md | ||
| - Using with Codex: data-engineering/guides/using-with-codex.md | ||
| - ClickHouse: data-engineering/guides/clickhouse.md | ||
| - Configure: | ||
| - Overview: configure/index.md | ||
| - Warehouses: configure/warehouses.md | ||
| - LLMs: | ||
| - Providers: configure/providers.md | ||
| - Models: configure/models.md | ||
| - Bedrock Custom Endpoints: configure/bedrock-custom-endpoints.md | ||
| - MCPs & ACPs: | ||
| - MCP Servers: configure/mcp-servers.md | ||
| - ACP Support: configure/acp.md | ||
| - Appearance: | ||
| - Themes: configure/themes.md | ||
| - Keybinds: configure/keybinds.md | ||
| - Training: | ||
| - Overview: data-engineering/training/index.md | ||
| - Team Deployment: data-engineering/training/team-deployment.md | ||
| - Additional Config: | ||
| - LSP Servers: configure/lsp.md | ||
| - Network: reference/network.md | ||
| - Windows / WSL: reference/windows-wsl.md | ||
| - Config File Reference: configure/config.md | ||
| - Governance: | ||
| - Overview: configure/governance.md | ||
| - Rules: configure/rules.md | ||
| - Permissions: configure/permissions.md | ||
| - Context Management: configure/context-management.md | ||
| - Formatters: configure/formatters.md | ||
| - Reference: | ||
| - Changelog: reference/changelog.md | ||
| - Telemetry: reference/telemetry.md | ||
| - Security FAQ: reference/security-faq.md | ||
| - Troubleshooting: reference/troubleshooting.md | ||
| - Extend: | ||
| - SDK: develop/sdk.md | ||
| - Server API: develop/server.md | ||
| - Plugins: develop/plugins.md | ||
| - Ecosystem: develop/ecosystem.md | ||
| - Overview: datamates/examples/examples.md | ||
| - Build, Test, Docs for dbt Models: datamates/examples/build-test-document-dbt-model.md | ||
| - Find Broken Views in Snowflake: datamates/examples/find-broken-views-snowflake.md | ||
| - Optimize Cost and Performance: datamates/examples/optimize-costs-and-performance.md | ||
| - Migrate a pyspark project to dbt: datamates/examples/migrate-pyspark-dbt.md | ||
| - Debug an Airflow DAG: datamates/examples/debug-airflow-dag.md | ||
| - Write Snowflake UDFs: datamates/examples/write-snowflake-udfs.md | ||
| - FAQ: | ||
| - Security FAQs: datamates/faq/security.md | ||
| - Pricing FAQs: datamates/faq/pricing-faqs.md | ||
| - Troubleshooting: datamates/faq/troubleshooting.md |
There was a problem hiding this comment.
MAJOR — 36 nav entries point at files that don't exist
This entire Altimate MCP section was lifted from the unified help-docs nav, but the content was never copied: docs/docs/datamates/ does not exist in this repo. main has zero datamates/ nav entries.
With the emoji fix applied so the build can run, MkDocs emits 36 warnings:
WARNING - A reference to 'datamates/index.md' is included in the 'nav' configuration, which is not found in the documentation files.
WARNING - A reference to 'datamates/user-guide/home.md' ...
... (36 total)
These are warnings, not build failures — strict is unset — so this ships rather than failing CI. Confirmed against the built artifact: the rendered index.html contains the Altimate MCP section with 37 datamates references emitted as raw unprocessed paths:
href="datamates/examples/examples.md"
href="datamates/faq/security.md"So these publish as dead links pointing at .md files. Note this also becomes a hard build failure the moment anyone sets strict: true.
Fix — either sync the datamates/** content, or have the sync prune nav subtrees whose targets aren't in the mirrored file set and replace this section with a single external link to https://help.altimate.ai/datamates/.
| - [Power User for dbt](/dbt-power-user/) — Best dbt extension for VS Code / Cursor. | ||
| - [Altimate MCP](/datamates/) — A local-first MCP server for your data stack. | ||
| - [Altimate Lite for Snowflake](/snowflake-native-app/) — More out of your Snowflake compute, without your data leaving your account. |
There was a problem hiding this comment.
MAJOR — root-relative cross-product links 404 on this domain
This repo deploys standalone: docs/docs/CNAME is docs.altimate.sh and site_url: https://docs.altimate.sh. The unified-site "de-prefixing" rewrote working fully-qualified URLs into root-relative paths that only resolve on help.altimate.ai.
git grep confirms 0 such links on main, 8 on this branch. On docs.altimate.sh, /datamates/, /dbt-power-user/, and /snowflake-native-app/ are all 404s — and /datamates/ is unreachable in this repo regardless, since that content was never synced.
Fix — keep cross-product links fully qualified (https://help.altimate.ai/...). De-prefixing is only correct for pages that exist within this mirror.
All three targets here are external products, so all three should be absolute URLs.
|
|
||
| - **BYOK (Bring Your Own Key)** — Free and unlimited. Configure any of the [35+ supported providers](../configure/providers.md) (Anthropic, OpenAI, AWS Bedrock, Azure OpenAI, etc.) | ||
| - **[Altimate LLM Gateway](https://help.altimate.ai/datamates/user-guide/components/llm-gateway/)** — Managed LLM access with dynamic model routing. 10M tokens free to get started — no API keys to manage | ||
| - **[Altimate LLM Gateway](/datamates/user-guide/components/llm-gateway/)** — Managed LLM access with dynamic model routing. 10M tokens free to get started — no API keys to manage |
There was a problem hiding this comment.
MAJOR — de-prefixed link now 404s on docs.altimate.sh
This is the clearest instance of the regression — a working fully-qualified URL was rewritten into a path that only resolves on help.altimate.ai:
--- **[Altimate LLM Gateway](https://help.altimate.ai/datamates/user-guide/components/llm-gateway/)** — ...
-+- **[Altimate LLM Gateway](/datamates/user-guide/components/llm-gateway/)** — ...This repo publishes to docs.altimate.sh (CNAME + site_url), where /datamates/... does not exist. The LLM Gateway link is the most damaging of the eight, since it appears in provider setup, quickstart, and IDE guidance.
Fix — restore the fully-qualified https://help.altimate.ai/datamates/user-guide/components/llm-gateway/.
| ``` | ||
|
|
||
| For pricing, security, and data handling details, see the [Altimate LLM Gateway guide](https://help.altimate.ai/datamates/user-guide/components/llm-gateway/). | ||
| For pricing, security, and data handling details, see the [Altimate LLM Gateway guide](/datamates/user-guide/components/llm-gateway/). |
There was a problem hiding this comment.
MAJOR — de-prefixed link now 404s on docs.altimate.sh
This is the clearest instance of the regression — a working fully-qualified URL was rewritten into a path that only resolves on help.altimate.ai:
--- **[Altimate LLM Gateway](https://help.altimate.ai/datamates/user-guide/components/llm-gateway/)** — ...
-+- **[Altimate LLM Gateway](/datamates/user-guide/components/llm-gateway/)** — ...This repo publishes to docs.altimate.sh (CNAME + site_url), where /datamates/... does not exist. The LLM Gateway link is the most damaging of the eight, since it appears in provider setup, quickstart, and IDE guidance.
Fix — restore the fully-qualified https://help.altimate.ai/datamates/user-guide/components/llm-gateway/.
|
|
||
| [Get Started](quickstart.md){ .md-button .md-button--primary } | ||
| [See Examples](../examples/index.md){ .md-button } | ||
| [Get Started](/getting-started/quickstart/){ .md-button .md-button--primary } |
There was a problem hiding this comment.
MAJOR — same CTA mis-target as the homepage
/getting-started/quickstart/ resolves to getting-started/quickstart.md — the page titled "Setup Guide", which this PR removes from the nav — not to the nav-labeled Quickstart (quickstart-new.md).
| <div class="doc-links" markdown> | ||
|
|
||
| **Learn More** — [Quickstart](quickstart.md) | [Examples](../examples/index.md) | [Use](../data-engineering/agent-modes.md) | [Configure](../configure/index.md) | [Interfaces](../usage/tui.md) | [Reference](../reference/security-faq.md) | ||
| **Learn More** — [Quickstart](/getting-started/quickstart/) | [Examples](/examples/) | [Use](/data-engineering/agent-modes/) | [Configure](/configure/) | [Interfaces](/usage/tui/) | [Reference](/reference/security-faq/) |
There was a problem hiding this comment.
MINOR — same CTA mis-target in the footer links
[Quickstart](/getting-started/quickstart/) resolves to the "Setup Guide" page rather than the nav-labeled Quickstart (quickstart-new.md).
| @@ -1,7 +1,7 @@ | |||
| # altimate-code llms.txt | |||
| # AI-friendly documentation index for altimate-code | |||
| # Generated: 2026-03-18 | Version: v0.5.0 | |||
There was a problem hiding this comment.
MINOR — this file was touched but left materially stale
Two routes were corrected here (both good — verified they now point at real pages), but the file still contradicts docs shipped in this same commit:
llms.txt claim |
Reality in this repo |
|---|---|
Version: v0.5.0, generated 2026-03-18 |
packages/opencode/package.json = 1.17.9 |
| "all 8 supported warehouses" (line 11) | configure/warehouses.md documents 13 |
| "7 specialized agents (Builder, Analyst, Validator, Migrator, Researcher, Trainer, Executive)" (line 16) | configure/agents.md and data-engineering/agent-modes.md document 3: Builder, Analyst, Plan |
This is the file AI consumers read as the canonical product index, and it now disagrees with its own sibling pages.
Fix — regenerate from source data rather than hand-editing individual URLs.
| --- | ||
| title: altimate-code | ||
| title: Altimate Code | ||
| hide: | ||
| - toc | ||
| - navigation | ||
| --- |
There was a problem hiding this comment.
MINOR — the homepage is the one page with no SEO description
Of the 73 changed markdown files, 72 received both title and description. This one — the new landing page and the highest-value SEO surface in the site — has title and hide but no description, so it falls back to the generic site-wide site_description.
Fix — add a description matching this page's actual pitch.
| ## Full Altimate MCP Documentation | ||
|
|
||
| The Datamates extension offers additional capabilities beyond Altimate Code Chat, including MCP server integrations, Knowledge Hub, Memory Hub, and Guardrails. See the [Datamates documentation](https://help.altimate.ai/datamates/) for full setup guides, integration configuration, and feature details. | ||
| The Datamates extension offers additional capabilities beyond Altimate Code Chat, including MCP server integrations, Knowledge Hub, Memory Hub, and Guardrails. See the [Altimate MCP documentation](/datamates/) for full setup guides, integration configuration, and feature details. |
There was a problem hiding this comment.
MINOR — brand rename is half-applied
The "Datamates" → "Altimate MCP" rename was applied to command-palette labels and headings but not body copy. This line reads:
The Datamates extension offers additional capabilities … See the [Altimate MCP documentation]
…under a heading that says "Full Altimate MCP Documentation" — three names for one thing in two sentences. Six "Datamates" references remain in this file (lines 3, 8, 20, 24, 28, 73) plus develop/ecosystem.md:22.
Fix — if the VS Code marketplace listing is still literally named "Datamates", state that once explicitly ("the Altimate MCP extension, listed as Datamates in the marketplace") rather than alternating between the two names.
Review summary — requesting changesReviewed at 15 inline comments cover the issues that map to specific lines: 1 critical, 9 major, 5 minor. One clarification on severityThe 36 missing
MkDocs treats missing nav targets as warnings unless Issues not tied to a specific lineMINOR — the do-not-edit safeguard described in the PR is absentThe description says "each file carries a do-not-edit banner; this copy is regenerated automatically." Of the 74 markdown files under The whole migration rests on people not editing this mirror. Without the guardrail, local edits get silently clobbered on the next sync — which is exactly the problem the 13 reconciled edits represent. Fix — emit an HTML-comment banner at the top of every synced file, plus a CI check that fails when a file in the synced set changes without a corresponding MINOR — no pre-merge docs validation in CI
Fix — add a A strict PR-triggered build would have caught the emoji failure and the 36 dead nav targets outright, and would have surfaced the absolute-link warnings behind the cross-product and CTA issues. It would not, on its own, prove the CTA points at the semantically wrong page — that needs an explicit route assertion. NitsSync rewrites YAML inside fenced code blocks — The normalizer added quotes to Cosmetic YAML churn inflates the diff — Roughly 100 of the 297 changed lines in this file are pure round-trip noise: re-quoting Worth verifying before merge (not counted as defects)
Pre-existing debt (not introduced here)Nine files sit outside the nav. Eight pre-date this PR. The one worth acting on is What's done well
Suggested merge order
|
dc62de1 to
2bf1dff
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (5)
docs/docs/assets/stylesheets/neoteroi-cards.css (2)
33-38: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueMerge the two
.nt-cardblocks; the shadows are also overridden.Lines 33-35 and 61-64 declare the same selector in one file. Merge them into a single block.
extra.cssline 302 setsbox-shadow: nonefor the default scheme and line 311 sets it for slate, so the shadows at lines 34 and 37 never render.extra.csslines 295-296 also overridepaddingandmargin-bottomwith!important.Also applies to: 61-64
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/assets/stylesheets/neoteroi-cards.css` around lines 33 - 38, Merge the declarations from both .nt-card blocks into one selector block, preserving the effective styles and removing the duplicate selector. Do not retain the box-shadow declarations because extra.css overrides them for both schemes; likewise avoid duplicating padding or margin-bottom declarations already overridden there with !important.
40-51: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
.nt-cardhas two owners.docs/mkdocs.ymlloadsneoteroi-cards.cssbeforeextra.css, andextra.cssrestyles.nt-cardwith equal-or-higher specificity plus!importantonborder-radius,padding, andmargin-bottom. Most rules in this file are therefore dead, and the few that survive fight the intent inextra.css. Makeextra.cssthe single owner of card appearance and keep this file to grid layout only.
docs/docs/assets/stylesheets/neoteroi-cards.css#L40-L51: delete the slate block.extra.csslines 308-316 already set the dark-mode background, border, and hover state. The survivingtransition: all 0.25s easeoverrides the scoped transition inextra.cssline 298 and animates every property on hover. Move thetranslateY(-2px)lift intoextra.cssif it is wanted.docs/docs/assets/stylesheets/neoteroi-cards.css#L33-L38: delete the shadow rules.extra.csslines 302 and 311 setbox-shadow: nonein both schemes.docs/docs/assets/stylesheets/neoteroi-cards.css#L61-L64: merge this duplicate.nt-cardselector away.extra.csslines 295-296 overridepaddingandmargin-bottomwith!important.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/assets/stylesheets/neoteroi-cards.css` around lines 40 - 51, Make extra.css the sole owner of .nt-card appearance: in docs/docs/assets/stylesheets/neoteroi-cards.css, delete the slate block at lines 40-51, remove the shadow rules at lines 33-38, and merge away the duplicate .nt-card selector at lines 61-64, leaving this file responsible only for grid layout. If the card lift is desired, move the translateY(-2px) behavior into extra.css without restoring conflicting transition or appearance rules.docs/docs/assets/stylesheets/extra.css (3)
2279-2309: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winUse the brand token for the pillar colors; the hard-coded orange differs from
--alt-orange.Lines 2294, 2295, and 2307 use
rgba(255, 107, 28, …), which is#FF6B1C. The brand token at line 10 is--alt-orange:#F07030``. The file header states the palette is brand-true. The two oranges render differently side by side.Line 2298 also sets
color: rgba(255, 255, 255, 0.8). White text needs a dark backdrop. Confirm.ak-hero-pillarsonly renders inside.ak-proof, which setsbackground:#0B0D12``. If the pillars can appear in the default light scheme, the text will fail contrast.🎨 Proposed fix to use the brand tokens
padding: 0.9rem 0.6rem; border-radius: 8px; - border: 1px solid rgba(255, 107, 28, 0.35); - background: rgba(255, 107, 28, 0.05); + border: 1px solid rgba(240, 112, 48, 0.35); + background: rgba(240, 112, 48, 0.05); font-size: 0.62rem;.ak-pillar svg { width: 22px; height: 22px; - color: rgba(255, 107, 28, 0.9); + color: var(--alt-orange); flex-shrink: 0; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/assets/stylesheets/extra.css` around lines 2279 - 2309, Update the .ak-pillar border, background, and .ak-pillar svg color declarations to derive from the --alt-orange brand token instead of hard-coded rgba(255, 107, 28, …) values, preserving their current opacity. Verify that .ak-hero-pillars is only used within .ak-proof with its dark `#0B0D12` background; if it can render outside that context or in the light scheme, adjust the pillar text color to maintain sufficient contrast.
32-33: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winFix the stylelint
value-keyword-caseerrors.Stylelint reports errors at lines 32, 33, 858, and 909. Lines 858 and 909 use
currentColor; the CSS-wide keyword iscurrentcolorin lowercase, so those are genuine fixes.Lines 32 and 33 list font family names, not keywords. Stylelint's
value-keyword-caserule flags them because it does not treat unquoted font family names as proper nouns. Do not lowercase the family names, becauseBlinkMacSystemFontandRobotomust match the installed font names. Configure the rule instead.🎨 Proposed fixes
Apply the keyword fix at lines 858 and 909:
- color: currentColor; + color: currentcolor;Then disable the rule for font shorthand values in the stylelint config:
{ "rules": { "value-keyword-case": [ "lower", { "ignoreProperties": ["/^--alt-font/", "font", "font-family"] } ] } }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/assets/stylesheets/extra.css` around lines 32 - 33, Lowercase currentColor to currentcolor at the declarations around the affected stylesheet usages, and update the stylelint value-keyword-case configuration to ignore custom properties matching ^--alt-font plus font and font-family, preserving the existing capitalized font family names in --alt-font-ui and --alt-font-mono.Source: Linters/SAST tools
584-588: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winRemove the legacy
.ak-*CSS blocks.The Trusted-by class blocks at lines 584-588 and swimlane flow class blocks at lines 1957-1964 are only referenced in this CSS file. Delete them to avoid retaining unused legacy rules.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/assets/stylesheets/extra.css` around lines 584 - 588, Remove the legacy .ak-trusted CSS block and the swimlane flow class blocks identified in the comment from extra.css. Do not alter the active .ak-proof styles or other unrelated rules.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/docs/assets/stylesheets/copy-page.css`:
- Around line 41-46: Add visible keyboard focus styles for the copy controls by
extending the existing state rule around .ak-copy-page__main and
.ak-copy-page__toggle to include appropriate focus selectors, including the menu
buttons used by the disclosure widget. Ensure focused controls have a reliable
visual indicator without removing the current hover or expanded-state styling.
- Around line 4-13: Add the copy-page controller to the existing MkDocs override
configuration through an extra_javascript entry, alongside the current extra_css
and custom_dir settings. Ensure it references the script responsible for
controlling .ak-copy-page markup and its aria-expanded, hidden, and copied
states.
In `@docs/docs/assets/stylesheets/extra.css`:
- Around line 818-819: Scope the .md-content__button rule to the existing
homepage wrapper class used elsewhere in the stylesheet, so the button is hidden
only on hub index pages while remaining visible on other documentation pages;
keep the comment aligned with that scoped behavior.
---
Nitpick comments:
In `@docs/docs/assets/stylesheets/extra.css`:
- Around line 2279-2309: Update the .ak-pillar border, background, and
.ak-pillar svg color declarations to derive from the --alt-orange brand token
instead of hard-coded rgba(255, 107, 28, …) values, preserving their current
opacity. Verify that .ak-hero-pillars is only used within .ak-proof with its
dark `#0B0D12` background; if it can render outside that context or in the light
scheme, adjust the pillar text color to maintain sufficient contrast.
- Around line 32-33: Lowercase currentColor to currentcolor at the declarations
around the affected stylesheet usages, and update the stylelint
value-keyword-case configuration to ignore custom properties matching
^--alt-font plus font and font-family, preserving the existing capitalized font
family names in --alt-font-ui and --alt-font-mono.
- Around line 584-588: Remove the legacy .ak-trusted CSS block and the swimlane
flow class blocks identified in the comment from extra.css. Do not alter the
active .ak-proof styles or other unrelated rules.
In `@docs/docs/assets/stylesheets/neoteroi-cards.css`:
- Around line 33-38: Merge the declarations from both .nt-card blocks into one
selector block, preserving the effective styles and removing the duplicate
selector. Do not retain the box-shadow declarations because extra.css overrides
them for both schemes; likewise avoid duplicating padding or margin-bottom
declarations already overridden there with !important.
- Around line 40-51: Make extra.css the sole owner of .nt-card appearance: in
docs/docs/assets/stylesheets/neoteroi-cards.css, delete the slate block at lines
40-51, remove the shadow rules at lines 33-38, and merge away the duplicate
.nt-card selector at lines 61-64, leaving this file responsible only for grid
layout. If the card lift is desired, move the translateY(-2px) behavior into
extra.css without restoring conflicting transition or appearance rules.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 7ee76be3-bd67-4f55-8b42-c900cdf91085
⛔ Files ignored due to path filters (1)
docs/docs/assets/brand/logo-white.svgis excluded by!**/*.svg
📒 Files selected for processing (4)
docs/docs/assets/stylesheets/copy-page.cssdocs/docs/assets/stylesheets/extra.cssdocs/docs/assets/stylesheets/neoteroi-cards.cssdocs/mkdocs.yml
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/mkdocs.yml
| .ak-copy-page { | ||
| position: relative; | ||
| float: right; | ||
| display: inline-flex; | ||
| align-items: stretch; | ||
| margin: 0 0 0.75rem 1rem; | ||
| font-family: var(--md-text-font-family, inherit); | ||
| font-size: 0.7rem; | ||
| z-index: 3; | ||
| } |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Confirm the copy-page control has a script and markup source.
set -euo pipefail
# Find the mkdocs config and print its JS/CSS asset registration.
fd -t f 'mkdocs.yml' | while IFS= read -r cfg; do
echo "=== $cfg ==="
rg -n -A 8 'extra_javascript|extra_css|custom_dir' "$cfg"
done
# Find any source that produces the ak-copy-page markup or behaviour.
rg -n -C 3 'ak-copy-page' --glob '!**/*.css'Repository: AltimateAI/altimate-code
Length of output: 760
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== tracked docs-related files ==="
git ls-files 'docs/**' | sed -n '1,200p'
echo "=== copy-page stylesheet ==="
if [ -f docs/docs/assets/stylesheets/copy-page.css ]; then
cat -n docs/docs/assets/stylesheets/copy-page.css | sed -n '1,220p'
fi
echo "=== references to copy page classes/state (all tracked files) ==="
python3 - <<'PY'
import subprocess, re, pathlib
files = subprocess.check_output(["git","ls-files"], text=True).splitlines()
needle = re.compile(r'ak-copy-page|aria-expanded|copied|copy-page')
for f in files:
try:
text = pathlib.Path(f).read_text(encoding='utf-8', errors='replace')
except Exception:
continue
if needle.search(text):
print(f"--- {f} ---")
lines = text.splitlines()
for i,l in enumerate(lines,1):
if needle.search(l):
start=max(1,i-4); end=min(len(lines),i+4)
for j in range(start,end+1):
print(f"{j}: {lines[j-1]}")
PY
echo "=== mkdocs js/custom_dir summary ==="
python3 - <<'PY'
import pathlib, re, subprocess
mkdocs = pathlib.Path('docs/mkdocs.yml')
if mkdocs.exists():
txt = mkdocs.read_text()
for section in ['custom_dir','extra_javascript','extra_css']:
print(f"{section}: {section in txt}")
PYRepository: AltimateAI/altimate-code
Length of output: 25178
Register the copy-page script with the same override context.
docs/mkdocs.yml currently only registers extra_css and custom_dir; this stylesheet adds aria-expanded, [hidden], and copied state styles for .ak-copy-page, so add the matching extra_javascript entry for the controller that injects or controls that markup.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/assets/stylesheets/copy-page.css` around lines 4 - 13, Add the
copy-page controller to the existing MkDocs override configuration through an
extra_javascript entry, alongside the current extra_css and custom_dir settings.
Ensure it references the script responsible for controlling .ak-copy-page markup
and its aria-expanded, hidden, and copied states.
| .ak-copy-page__main:hover, | ||
| .ak-copy-page__toggle:hover, | ||
| .ak-copy-page__toggle[aria-expanded='true'] { | ||
| background: var(--md-default-fg-color--lightest); | ||
| border-color: var(--md-default-fg-color--lighter); | ||
| } |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add visible focus styles for the copy control.
The stylesheet defines :hover and [aria-expanded='true'] states, but no focus state. Keyboard users get no reliable focus indicator on .ak-copy-page__main, .ak-copy-page__toggle, or the menu buttons. The menu is a disclosure widget, so keyboard operation is expected.
♿ Proposed fix to add focus indicators
.ak-copy-page__main:hover,
.ak-copy-page__toggle:hover,
.ak-copy-page__toggle[aria-expanded='true'] {
background: var(--md-default-fg-color--lightest);
border-color: var(--md-default-fg-color--lighter);
}
+
+.ak-copy-page__main:focus-visible,
+.ak-copy-page__toggle:focus-visible,
+.ak-copy-page__menu button:focus-visible {
+ outline: 2px solid var(--md-accent-fg-color);
+ outline-offset: 2px;
+}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| .ak-copy-page__main:hover, | |
| .ak-copy-page__toggle:hover, | |
| .ak-copy-page__toggle[aria-expanded='true'] { | |
| background: var(--md-default-fg-color--lightest); | |
| border-color: var(--md-default-fg-color--lighter); | |
| } | |
| .ak-copy-page__main:hover, | |
| .ak-copy-page__toggle:hover, | |
| .ak-copy-page__toggle[aria-expanded='true'] { | |
| background: var(--md-default-fg-color--lightest); | |
| border-color: var(--md-default-fg-color--lighter); | |
| } | |
| .ak-copy-page__main:focus-visible, | |
| .ak-copy-page__toggle:focus-visible, | |
| .ak-copy-page__menu button:focus-visible { | |
| outline: 2px solid var(--md-accent-fg-color); | |
| outline-offset: 2px; | |
| } |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/assets/stylesheets/copy-page.css` around lines 41 - 46, Add visible
keyboard focus styles for the copy controls by extending the existing state rule
around .ak-copy-page__main and .ak-copy-page__toggle to include appropriate
focus selectors, including the menu buttons used by the disclosure widget.
Ensure focused controls have a reliable visual indicator without removing the
current hover or expanded-state styling.
| /* ---- Hide ToC button on hub indexes (we hide toc in frontmatter) -- */ | ||
| .md-content__button { display: none; } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Scope the .md-content__button rule; it currently hides the button on every page.
The comment states the intent is hub index pages. The selector has no scope, so it hides Material's content buttons site-wide. This removes the "Edit this page" and "View source" links from all documentation pages.
If the goal is hub indexes only, scope the rule to the homepage wrapper class that the rest of this file already uses.
🔧 Proposed fix to scope the rule
-/* ---- Hide ToC button on hub indexes (we hide toc in frontmatter) -- */
-.md-content__button { display: none; }
+/* ---- Hide ToC button on hub indexes (we hide toc in frontmatter) -- */
+.ak-home .md-content__button { display: none; }If the site-wide hide is intentional, update the comment to say so.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| /* ---- Hide ToC button on hub indexes (we hide toc in frontmatter) -- */ | |
| .md-content__button { display: none; } | |
| /* ---- Hide ToC button on hub indexes (we hide toc in frontmatter) -- */ | |
| .ak-home .md-content__button { display: none; } |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/assets/stylesheets/extra.css` around lines 818 - 819, Scope the
.md-content__button rule to the existing homepage wrapper class used elsewhere
in the stylesheet, so the button is hidden only on hub index pages while
remaining visible on other documentation pages; keep the comment aligned with
that scoped behavior.
2bf1dff to
1269968
Compare
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (3)
docs/docs/llms.txt (1)
3-4: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd the generated-file banner.
This file is synchronized from the documentation source of truth. Add a clear do-not-edit notice and reference
tools/sync_to_oss.pyso future edits do not bypass the sync process.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/llms.txt` around lines 3 - 4, Update the header of the generated llms documentation to include a clear do-not-edit notice and reference tools/sync_to_oss.py as the synchronization mechanism, while preserving the existing Generated and Source metadata.docs/docs/getting-started/setup.md (1)
291-294: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd language tags to the fenced blocks.
These blocks trigger MD040. Use
textfor the command output, TUI command, and prompt blocks.Also applies to: 310-312, 438-445
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/getting-started/setup.md` around lines 291 - 294, Add the text language tag to the fenced code blocks containing the warehouse_test output and the corresponding command output, TUI command, and prompt examples. Update all referenced blocks, including the additional occurrences, without changing their contents.Source: Linters/SAST tools
docs/docs/getting-started/quickstart.md (1)
70-74: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd language tags to the fenced blocks.
These blocks trigger MD040. Use
textfor the output, prompt, and generated directory-tree blocks.Also applies to: 147-152, 158-174
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/docs/getting-started/quickstart.md` around lines 70 - 74, Add the `text` language tag to the fenced code blocks in the quickstart examples, including the output, prompt, and generated directory-tree blocks referenced by the comment. Update all affected fences consistently without changing their contents.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/docs/getting-started/quickstart.md`:
- Around line 38-39: Update the Altimate LLM Gateway link in the quickstart tip
to use the product’s canonical standalone documentation URL instead of the
`/datamates/` namespace, while preserving the surrounding link text and
description.
- Line 45: Update the environment-scan description near the “Scan your
environment?” dialog to accurately state that credential-bearing values from
profiles, Git configuration, environment variables, and Docker discovery may be
read, sent to the LLM in tool results, and retained in session transcripts. Add
the requested opt-out guidance, or revise the existing privacy claim to match
this behavior while preserving the telemetry-disable instructions.
In `@docs/docs/getting-started/setup.md`:
- Around line 210-226: Update the BigQuery and DuckDB quickstart connection
examples in the getting-started guide to match the documented Warehouses schema:
use {env:VAR} substitution where applicable, credentials_path for BigQuery, and
type plus path for local DuckDB. Ensure the resulting connections.json examples
are directly compatible with Altimate Code.
In `@docs/docs/usage/ide.md`:
- Line 3: Update the page description in the front matter to state that the
Datamates extension can use an existing altimate-code CLI or install it
automatically on first use, matching the behavior documented in the installation
section.
- Around line 53-62: Remove the entire “Extension settings” section, including
the settings table and native-install assurance paragraph. Do not document
altimate.altimateCodeRequireConsent, altimate.codeAutoUpdate, VS Code extension
behavior, or automated GitHub-release installation.
---
Nitpick comments:
In `@docs/docs/getting-started/quickstart.md`:
- Around line 70-74: Add the `text` language tag to the fenced code blocks in
the quickstart examples, including the output, prompt, and generated
directory-tree blocks referenced by the comment. Update all affected fences
consistently without changing their contents.
In `@docs/docs/getting-started/setup.md`:
- Around line 291-294: Add the text language tag to the fenced code blocks
containing the warehouse_test output and the corresponding command output, TUI
command, and prompt examples. Update all referenced blocks, including the
additional occurrences, without changing their contents.
In `@docs/docs/llms.txt`:
- Around line 3-4: Update the header of the generated llms documentation to
include a clear do-not-edit notice and reference tools/sync_to_oss.py as the
synchronization mechanism, while preserving the existing Generated and Source
metadata.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 651506ab-f8a1-419d-aaf6-319d07e8ad7a
📒 Files selected for processing (8)
docs/docs/develop/ecosystem.mddocs/docs/getting-started/quickstart-new.mddocs/docs/getting-started/quickstart.mddocs/docs/getting-started/setup.mddocs/docs/index.mddocs/docs/llms.txtdocs/docs/usage/ide.mddocs/mkdocs.yml
💤 Files with no reviewable changes (1)
- docs/docs/getting-started/quickstart-new.md
🚧 Files skipped from review as they are similar to previous changes (2)
- docs/docs/develop/ecosystem.md
- docs/mkdocs.yml
| !!! tip "Don't want to manage API keys?" | ||
| The [Altimate LLM Gateway](https://help.altimate.ai/datamates/user-guide/components/llm-gateway/) is the top row of the picker — 10M free tokens, and altimate-code auto-selects the right model per task. First-run sign-in uses a loopback OAuth on `127.0.0.1:7317-7325` (falls back if the preferred port is taken). |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use the canonical LLM Gateway documentation URL.
This link targets the /datamates/ product namespace. Replace it with the standalone documentation origin used by this product.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/getting-started/quickstart.md` around lines 38 - 39, Update the
Altimate LLM Gateway link in the quickstart tip to use the product’s canonical
standalone documentation URL instead of the `/datamates/` namespace, while
preserving the surrounding link text and description.
| "model": "google/gemini-2.5-pro" | ||
| } | ||
| ``` | ||
| Immediately after model setup, a **"Scan your environment?"** Yes/No dialog appears. Say **Yes** and altimate-code reads local config files (`.dbt/profiles.yml`, `dbt_project.yml`, `.git/config`) — no credentials are read or sent, and no schema, model contents, or queries leave your computer. An anonymous environment summary (e.g. "dbt project detected, no warehouse configured") may be included in the standard telemetry stream if telemetry is enabled; disable via `ALTIMATE_TELEMETRY_DISABLED=true` or the [telemetry docs](../reference/telemetry.md) if you want a strictly-offline scan. The scan then routes you into one of four branches: |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n -C3 \
'Scan your environment|ALTIMATE_TELEMETRY_DISABLED|profiles\.yml|\.git/config|environment summary|telemetry' \
. -g '*.ts' -g '*.tsx' -g '*.js' -g '*.md'Repository: AltimateAI/altimate-code
Length of output: 50381
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== candidate files =="
fd -a 'telemetry|telemetry-safety|dbt-profile|git|scan|cli|registry|config' packages docs 2>/dev/null | sed 's#^\./##' | head -200
echo "== focused search =="
rg -n \
'ALTIMATE_TELEMETRY_DISABLED|warehouse_census|Scan your environment|environment summary|profiles\.yml|\.git/config|secret|credential|password|token|key|account|user' \
packages -g '*.ts' -g '*.tsx' --max-count 200Repository: AltimateAI/altimate-code
Length of output: 50381
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== source files matching telemetry safety =="
git ls-files | rg 'packages/.*/src/.*/telemetry.*\.ts$|packages/.*/test/.*/telemetry-safety.*\.ts$'
echo "== telemetry-safety excerpt =="
tg='packages/opencode/src/altimate/telemetry-safety.ts'
if [ -f "$tg" ]; then
nl -ba "$tg" | sed -n '1,260p'
fi
echo "== telemetry safety tests context =="
fg='packages/opencode/test/altimate/telemetry-safety.test.ts'
if [ -f "$fg" ]; then
nl -ba "$fg" | sed -n '1,260p'
fi
echo "== focused definitions for scan/env summary =="
rg -n \
'environment summary|Scan your environment|ALTIMATE_TELEMETRY_DISABLED|warehouse_census|sanitize.*config|secret|credential|password|token|account|user|http-password|raw' \
packages/opencode/src packages/opencode/test --max-count 200Repository: AltimateAI/altimate-code
Length of output: 529
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
FILES='packages/opencode/src/altimate/review/telemetry.ts
packages/opencode/src/altimate/telemetry/index.ts
packages/opencode/src/altimate/telemetry/onboarding.ts
packages/opencode/test/altimate/telemetry-safety.test.ts'
for f in $FILES; do
[ -f "$f" ] || { echo "== missing $f =="; continue; }
echo "== $f (line count) =="
wc -l "$f"
done
echo "== telemetry safety excerpt =="
sed -n '1,280p' packages/opencode/src/altimate/review/telemetry.ts
echo "== onboarding excerpt =="
sed -n '1,280p' packages/opencode/src/altimate/telemetry/onboarding.ts
echo "== index excerpt =="
sed -n '1,280p' packages/opencode/src/altimate/telemetry/index.ts
echo "== safety tests excerpt =="
sed -n '1,280p' packages/opencode/test/altimate/telemetry-safety.test.tsRepository: AltimateAI/altimate-code
Length of output: 41183
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== onboarding scan-related excerpts =="
sed -n '260,337p' packages/opencode/src/altimate/telemetry/onboarding.ts
echo "== telemetry flag constants =="
rg -n 'ALTIMATE_TELEMETRY_(DISABLED|FORCE)|FLAG|Flag|application_insights|disable|disabled' packages/opencode/src -g '*.ts' | head -200
echo "== warehouse census and registry sanitize excerpts =="
rg -n 'warehouse_census|detectAuthMethod|detectQueryType|sanitize|secret|password|token|account|redact|credential' packages/opencode/src/altimate -g '*.ts' -A 5 -B 5Repository: AltimateAI/altimate-code
Length of output: 50381
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== onboarding scan gate section =="
sed -n '260,337p' packages/opencode/src/altimate/telemetry/onboarding.ts
echo "== index track init and warehouse_census section =="
sed -n '1640,1820p' packages/opencode/src/altimate/telemetry/index.ts
sed -n '1820,1960p' packages/opencode/src/altimate/telemetry/index.ts
sed -n '420,470p' packages/opencode/src/altimate/telemetry/index.ts
echo "== exact disabled/force definitions =="
rg -n 'ALTIMATE_TELEMETRY_(DISABLED|FORCE)|isAutomatedRun|disabled|force' packages/opencode/src/altimate/telemetry/index.ts -A 4 -B 4
echo "== exact scan files names =="
git ls-files | rg 'packages/opencode/src/altimate/(.*(scan|census|census)|telemetry/|native/.*connection|config|flag).*' | head -200
echo "== locate scan-related definitions/source =="
rg -n 'environmentScan|scan_gate|environment scan|Scan your environment|warehouse_census|profile|profiles|connection_string|password|token|account|git/config|git config|credentials|registry' packages/opencode/src \
--glob '*.ts' \
-A 3 -B 3 \
| head -300Repository: AltimateAI/altimate-code
Length of output: 46573
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== project scan source =="
sed -n '1,360p' packages/opencode/src/altimate/tools/project-scan.ts
echo "== dbt profiles resolver source =="
sed -n '1,280p' packages/opencode/src/altimate/native/connections/dbt-profiles.ts
echo "== registry census source =="
rg -n 'warehouse_census|census|list\(\)|setConfigs|detectAuth|isSensitive|sanitize|telemetry' packages/opencode/src/altimate/native/connections/registry.ts -A 12 -B 12
echo "== credential/store source =="
sed -n '1,180p' packages/opencode/src/altimate/native/connections/credential-store.tsRepository: AltimateAI/altimate-code
Length of output: 30944
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== project scan rest source =="
sed -n '220,720p' packages/opencode/src/altimate/tools/project-scan.ts
echo "== telemetry masking utils and env-var masking =="
rg -n 'maskString|SENSITIVE_KEYS|isSensitiveKey|mask.*value|mask.*env|env-var|secret' packages/opencode/src/altimate/telemetry/index.ts \
-A 8 -B 4 \
| head -300
echo "== scan telemetry event shape and raw config usage =="
rg -n 'environment_scan|environment_scan_completed|scan_gate_choice|env-vars|connections_found|warehouse_types|connection_sources|has_env_connections|secret|password|token|account|maskString|Telemetry.track\\(' packages/opencode/src/altimate/tools/project-scan.ts \
-A 8 -B 8 \
| head -400Repository: AltimateAI/altimate-code
Length of output: 23296
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== project scan telemetry section =="
rg -n 'telemetry|Environment Scan|connections|scan_gate|environment_scan|has_env_connections|has_dbt|warehouse_types|connection_sources|has_dbt_profiles|Telemetry|mask' packages/opencode/src/altimate/tools/project-scan.ts \
-A 12 -B 8 \
| sed -n '1,260p'
echo "== warehouse discovery credential handling =="
rg -n 'warehouse.discover|secret|sensitive|password|token|connection_string|docker|ssh|censor|redact' packages/opencode/src/altimate -g '*.ts' \
-A 8 -B 8 \
| sed -n '1,260p'Repository: AltimateAI/altimate-code
Length of output: 35699
Clarify credential exposure in the environment scan.
The scan reads .dbt/profiles.yml, .git/config, and environment variables that include credentials, while Docker discovery also reads env password values. These credentials are sent to the LLM in tool results and stored in session transcripts, but this paragraph still says “no credentials are read or sent.” Add a small credential-exposure note and an opt-out, or change the scan claim to match the behavior.
🧰 Tools
🪛 LanguageTool
[grammar] ~45-~45: Ensure spelling is correct
Context: ... Yes/No dialog appears. Say Yes and altimate-code reads local config files (`.dbt/pro...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/getting-started/quickstart.md` at line 45, Update the
environment-scan description near the “Scan your environment?” dialog to
accurately state that credential-bearing values from profiles, Git
configuration, environment variables, and Docker discovery may be read, sent to
the LLM in tool results, and retained in session transcripts. Add the requested
opt-out guidance, or revise the existing privacy claim to match this behavior
while preserving the telemetry-disable instructions.
| @@ -1,6 +1,11 @@ | |||
| --- | |||
| title: "IDE Integration — Altimate Code in VS Code" | |||
| description: "Use Altimate Code inside VS Code via the Datamates extension. Requires the altimate-code CLI to be installed." | |||
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Align the description with the documented CLI installation paths.
Line [3] says that the CLI must already be installed. Lines [59-62] say that the extension installs it automatically by default. Update the description to state that the extension can use an existing CLI or install one on first use.
Proposed fix
-description: "Use Altimate Code inside VS Code via the Datamates extension. Requires the altimate-code CLI to be installed."
+description: "Use Altimate Code inside VS Code via the Datamates extension. The extension can use or install the altimate-code CLI."Also applies to: 59-62
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/usage/ide.md` at line 3, Update the page description in the front
matter to state that the Datamates extension can use an existing altimate-code
CLI or install it automatically on first use, matching the behavior documented
in the installation section.
| ### Extension settings | ||
|
|
||
| The extension contributes these VS Code settings (Settings → search "altimate"): | ||
|
|
||
| | Setting | Default | Description | | ||
| |---|---|---| | ||
| | `altimate.altimateCodeRequireConsent` | `false` | Ask before downloading and installing the altimate-code CLI. By default the extension installs the CLI automatically the first time chat is opened. When enabled, chat shows an install prompt instead — nothing is downloaded until you confirm, and declining shows manual install instructions. | | ||
| | `altimate.codeAutoUpdate` | `true` | Keep the CLI up to date automatically in the background. Checked at most once a day, and only runs when the CLI is already installed. | | ||
|
|
||
| The extension installs the CLI natively: the release archive is fetched over HTTPS from [GitHub releases](https://github.com/AltimateAI/altimate-code/releases), verified against the release's `checksums.txt` (SHA-256), and placed in `~/.altimate/bin` — no shell scripts are executed and nothing outside your home directory is modified. Environments that prefer full control can enable `altimate.altimateCodeRequireConsent` via managed settings, or pre-install the CLI themselves (the extension uses any `altimate` found on `PATH` or in `~/.altimate/bin`). |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n 'altimateCodeRequireConsent|codeAutoUpdate|checksums\.txt|SHA-256|\.altimate/bin|GitHub releases|shell scripts' . \
--glob '!node_modules' \
--glob '!dist' \
--glob '!build' || trueRepository: AltimateAI/altimate-code
Length of output: 19046
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== candidate package files =="
git ls-files | rg '(^|/)package(-lock)?\.json$|(^|/)tsconfig.*\.json$|(^|/)extension\.src(\\.ts|\\.js)?$|(^|/)(extension|src|packages/opencode)' || true
echo
echo "== package names/dependencies mentioning vscode extension =="
rg -n '"`@vscode/test-electron`"|"`@types/vscode`"|vsce|vsce-|code' package.json packages/opencode/package.json . --glob '!node_modules' --glob '!dist' --glob '!build' | head -200 || trueRepository: AltimateAI/altimate-code
Length of output: 50381
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== repository package manifests =="
for f in package.json package-lock.json packages/opencode/package.json .vscode/extensions.json vscode/package.json; do
if [ -f "$f" ]; then
echo "--- $f ---"
cat "$f"
fi
done
echo
echo "== extension settings / altimate code settings references =="
rg -n '"settings"|"altimate\.altimateCodeRequireConsent"|"altimate\.codeAutoUpdate"|altimateCodeRequireConsent|codeAutoUpdate' . --glob '!node_modules' --glob '!dist' --glob '!build' | head -300 || true
echo
echo "== vscode / opencode ide package references =="
rg -n '`@opencode/`.*ide|opencode-ide|altimate-code|altimateCode|codeAutoUpdate|autoUpdate|ide' packages/opencode/package.json packages --glob 'package.json' packages/opencode/src/ide --glob '!node_modules' || trueRepository: AltimateAI/altimate-code
Length of output: 15903
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== source files containing codeAutoUpdate or consent =="
rg -n 'codeAutoUpdate|altimateCodeRequireConsent|requireConsent|consent|install prompt|Show' packages --glob '!node_modules' --glob '!dist' --glob '!build' || true
echo
echo "== install implementations relevant to fetch/verify/extract paths =="
sed -n '220,360p' packages/opencode/src/installation/index.ts 2>/dev/null || true
echo
sed -n='360,470p' install 2>/dev/null || true
echo
sed -n='80,260p' install.ps1 2>/dev/null || trueRepository: AltimateAI/altimate-code
Length of output: 50380
Remove the extension settings and native-install assurances.
This repository does not define altimate.altimateCodeRequireConsent, altimate.codeAutoUpdate, an Altimate VS Code extension, or automated native installs from GitHub releases. The install scripts are separate CLI installation tools, not VS Code extension behavior, so this section documents unsupported extensions/behavior.
🧰 Tools
🪛 LanguageTool
[grammar] ~55-~55: Ensure spelling is correct
Context: ...ese VS Code settings (Settings → search "altimate"): | Setting | Default | Description | |---...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/docs/usage/ide.md` around lines 53 - 62, Remove the entire “Extension
settings” section, including the settings table and native-install assurance
paragraph. Do not document altimate.altimateCodeRequireConsent,
altimate.codeAutoUpdate, VS Code extension behavior, or automated GitHub-release
installation.
1269968 to
fc71613
Compare
…cs-sync] Picks up the tool fix so /snowflake-native-app/ (and any other cross-section link) is rewritten to https://help.altimate.ai/... instead of 404ing standalone. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011fcN8kPwzjDeBysYUzKfJU
fc71613 to
ef000c5
Compare
| "account": "xy12345.us-east-1", | ||
| "user": "dbt_user", | ||
| "password": "{env:SNOWFLAKE_PASSWORD}", | ||
| "password": "${SNOWFLAKE_PASSWORD}", |
There was a problem hiding this comment.
WARNING: Connection password uses undocumented ${...} substitution instead of the canonical {env:VAR_NAME}
The Quickstart's Snowflake example uses ${SNOWFLAKE_PASSWORD}, but the documented substitution syntax is {env:VAR_NAME} (see configure/config.md → "Value Substitution", and configure/warehouses.md). The sibling setup.md page uses the correct "{env:SNOWFLAKE_PASSWORD}" form. A user who copies this likely gets the literal string rather than the resolved secret. The PostgreSQL example (line 119) has the same ${...} issue.
| "password": "${SNOWFLAKE_PASSWORD}", | |
| "password": "{env:SNOWFLAKE_PASSWORD}", |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| "access_token": "{env:DATABRICKS_TOKEN}", | ||
| "catalog": "main", | ||
| "schema": "default" | ||
| "keyfile": "~/.config/gcloud/application_default_credentials.json" |
There was a problem hiding this comment.
WARNING: BigQuery example uses keyfile, but the documented field is credentials_path
configure/warehouses.md documents the BigQuery credential field as credentials_path (omittable for ADC). keyfile is not a recognized field, so the connection won't load the service account JSON. The sibling setup.md uses the correct "credentials_path" field.
| "keyfile": "~/.config/gcloud/application_default_credentials.json" | |
| "credentials_path": "~/.config/gcloud/application_default_credentials.json" |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| "local": { | ||
| "type": "duckdb", | ||
| "path": "./data/analytics.duckdb" | ||
| "database": "./data/analytics.duckdb" |
There was a problem hiding this comment.
WARNING: DuckDB example uses "database", but the documented field is "path"
configure/warehouses.md documents DuckDB with "path": "./dev.duckdb". "database" is used for database names on other warehouses, not the DuckDB file path, so this connection likely won't open the file. The sibling setup.md uses the correct "path" field.
| "database": "./data/analytics.duckdb" | |
| "path": "./data/analytics.duckdb" |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
Note on the standalone-site findings (docs.altimate.sh)
Consequences for this review:
Actions taken:
Thanks @sahrizvi for the thorough review — the content-level fixes it surfaced were applied at the help-docs source; the deploy-level ones are obviated by the redirect. |
Initial docs sync from AltimateAI/help-docs, which is now the source of truth for documentation.
tools/sync_to_oss.py.mkdocs.ymlnav regenerated from help-docs.First sync is large because help-docs content was developed substantially post-migration. Please review; anything here that should live in help-docs instead can be pulled back before merge.
🤖 Generated with Claude Code
Summary by cubic
Re-synced docs from
AltimateAI/help-docswith a hardened sync that prunes orphans and now absolutizes cross-section links tohttps://help.altimate.ai/...to prevent 404s in this mirror. Finalized Getting Started IA (Quickstart at/getting-started/quickstart/, new Setup), refreshed homepage/SEO, fixed nav/links, clarified Altimate MCP naming, and correctedllms.txt.Migration
AltimateAI/help-docs; this repo mirrors viahelp-docs/tools/sync_to_oss.py(now prunes orphans).https://help.altimate.ai/...URLs (e.g.,/snowflake-native-app/).getting-started/quickstart-new.md;getting-started/quickstart.mdis Quickstart; newgetting-started/setup.md; moved CI guide tousage/ci-headless.md.Refactors
/getting-started/quickstart/,/examples/);mkdocs.ymlnav updated.assets/stylesheets/{extra.css,neoteroi-cards.css,copy-page.css}and slate logo; wired viaextra_css.llms.txtmetadata updated and source base set tohttps://help.altimate.ai/code/.Written for commit ef000c5. Summary will update on new commits.
Summary by CodeRabbit